﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace EditAnyString.Providers
{
	/// <summary>
	/// Cache provider interface
	/// </summary>
	public interface IEASCacheProvider
	{
		/// <summary>
		/// Gets or sets the value associated with the specified key.
		/// </summary>
		/// <typeparam name="T">Type</typeparam>
		/// <param name="key">The key of the value to get.</param>
		/// <returns>The value associated with the specified key.</returns>
		T Get<T>( string key );

		/// <summary>
		/// Adds the specified key and object to the cache.
		/// </summary>
		/// <param name="key">key</param>
		/// <param name="data">Data</param>
		/// <param name="cacheTime">Cache time in minutes. Set -1 to never expire.</param>
		void Set( string key, object data, int cacheTime );

		/// <summary>
		/// Gets a value indicating whether the value associated with the specified key is cached
		/// </summary>
		/// <param name="key">key</param>
		/// <returns>Result</returns>
		bool IsSet( string key );

		/// <summary>
		/// Removes the value with the specified key from the cache
		/// </summary>
		/// <param name="key">/key</param>
		void Remove( string key );

		/// <summary>
		/// Removes items by pattern
		/// </summary>
		/// <param name="pattern">pattern</param>
		void RemoveByPattern( string pattern );

		/// <summary>
		/// Clear all cache data
		/// </summary>
		void Clear();
	}
}
